//需求，封装一个方法，给你一个读取文件的路径，
//你要创造一方法,你这个方法能帮我读取文件，并且能把文件数据返回给我

const fs = require("fs")
const path = require("path")



//方法的定义
function getFileByPath(fpath,successCb,errCb){
    fs.readFile(fpath,'utf8',(err,data)=>{
        if(err){
            return errCb(err)//这里的errCb 是一个方法，有一个参数
        }
    //如果上面失误的话就会return err，return 的话也就结束和回调，不再执行这一句函数
        successCb(data)
    })
}



// 需求，先读取文件1，再文件2，最后文件3，
//这个方法是一个不断往里嵌套的方法，对于文件读取量少的还好用
//如果读取文件多的话就会不断嵌套，层级加深，形成 《 回调地狱 》

//方法的调用
getFileByPath(path.join(__dirname,'./files/1.txt'),function(data){
    console.log(data)

    getFileByPath(path.join(__dirname,'./files/2.txt'),function(data){
        console.log(data)

        getFileByPath(path.join(__dirname,'./files/3.txt'),function(data){
            console.log(data) 
        })//3.txt的嵌套结束

    })//2.txt的嵌套结束
    

})//1.txt的嵌套结束


// promise 是一个解决层级不断嵌套地回调地狱问题，但代码量不会精简
//把多层地嵌套改成串联式地函数调用



